package queue

import "golang-manage-admin/queue/business"

func RabbitMqQueue() *Queue {

	//创建接收队列
	queue := NewQueue("base")

	// @Todo Test队列
	queue.SetQueue(new(business.TestQueue))

	// @Todo DeadLetterQueue队列 -- 死信队列 （统一消息） 模式： Per-Queue-Message TTL
	queue.SetQueue(new(business.DeadLetterQueue))
	// @Todo DeadLetterHandleQueue -- 死信处理 （预计：消息回推重发）
	queue.SetQueue(new(business.DeadLetterHandleQueue))

	// @Todo DelayedQueue队列 -- 延时队列（单一消息）模式： Per-Message TTL （通过插件解决时序问题）
	queue.SetQueue(new(business.DelayedQueue))
	// @Todo DelayedHandleQueue队列 -- 延时处理队列
	queue.SetQueue(new(business.DelayedHandleQueue))

	return queue
}
